﻿using BLL;
using DevExpress.XtraEditors;
using System.Collections.Generic;
using System.Windows.Forms;
using System.Linq;

namespace ChamCongMain.Form
{
    public partial class frmCongDoan : DevExpress.XtraEditors.XtraForm
    {
        ChucNang cn;
        public Delegates.RefeshGrid LoadData;
        CongDoanBLL cdbll = new CongDoanBLL();
        SanPhamBLL spbll = new SanPhamBLL();
        int ma = 0;
        public frmCongDoan(ChucNang cn, CongDoan cd)
        {
            InitializeComponent();
            this.cn = cn;
            LoadDataToGrid();
            if (this.cn == ChucNang.Them)
            {
                this.Text = "Thêm Công Đoạn";
            }
            else
            {
                this.Text = "Sửa Công Đoạn";
                SetValueForForm(cd);
            }
        }

        //private bool CheckIn()
        //{
        //    List<CongDoan> listCongDoan = new List<CongDoan>();
        //    int ma = 0;
        //    int.TryParse(glkSanPham.EditValue.ToString(), out ma);

        //    listCongDoan = cdbll.GetAllCongDoanByMaSP(ma);
        //    double triGiaSP = 0;
        //    double.TryParse(spbll.GetSanPhamById(ma).GiaTien.ToString(), out triGiaSP);

        //    int soCongDoanThuc = 0;
        //    int.TryParse(spbll.GetSanPhamById(ma).SoCongDoan.ToString(), out soCongDoanThuc);
        //    double cc = (double)(from c in listCongDoan select c.TriGia).Sum();

        //    if (nbrSTT.Value > soCongDoanThuc)
        //    {
        //        XtraMessageBox.Show("Số STT đã vượt quá số công đoạn của sản phẩm!", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
        //        return false;
        //    }
        //    double giatriNhap = 0;
        //    double.TryParse(calTriGia.Value.ToString(), out giatriNhap);
        //    if (triGiaSP - cc <= giatriNhap)
        //    {
        //        XtraMessageBox.Show("Giá phải nhỏ hơn tống giá trị sản phẩm!", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
        //        return false;
        //    }
        //    //if (listCongDoan.Exists(so => so.Stt == nbrSTT.Value) && this.cn == ChucNang.Sua)
        //    //{
        //    //    return true;
        //    //}
        //    //else
        //    //{
        //    //    XtraMessageBox.Show("Đã có stt này rồi!", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
        //    //    return false;
        //    //}
        //    return true;
        //}

        #region Code xử lý lấy dữ liệu
        private void LoadDataToGrid()
        {
            SanPhamBLL spbll = new SanPhamBLL();
            glkSanPham.Properties.ValueMember = "SanPhamId";
            glkSanPham.Properties.DisplayMember = "TenSanPham";
            glkSanPham.Properties.DataSource = spbll.GetAllSanPham();
        }
        public CongDoan GetValueFromForm()
        {
            CongDoan congDoan = new CongDoan();
            congDoan.CongDoanId = ma;
            congDoan.TenCongDoan = txtTenCongDoan.Text;
            congDoan.SanPhamId = int.Parse(glkSanPham.EditValue.ToString());
            congDoan.Stt = int.Parse(nbrSTT.Value.ToString());
            congDoan.TriGia = int.Parse(calTriGia.EditValue.ToString());
            congDoan.GhiChu = txtGhiChu.Text;
            return congDoan;
        }

        public void SetValueForForm(CongDoan cd)
        {
            ma = int.Parse(cd.CongDoanId.ToString()) ;
            txtTenCongDoan.Text = cd.TenCongDoan;
            glkSanPham.EditValue = cd.SanPhamId;
            nbrSTT.Value = int.Parse(cd.Stt.ToString());
            calTriGia.EditValue = cd.TriGia;
            txtGhiChu.Text = cd.GhiChu;
        }

        public void ClearForm()
        {
            txtGhiChu.Text = "";
            txtTenCongDoan.Text = "";
            nbrSTT.Value = 0;
            calTriGia.EditValue = 0;
            glkSanPham.EditValue = "";
            txtTenCongDoan.Focus();
        }
        #endregion

        private void btnLuu_Click(object sender, System.EventArgs e)
        {
            CongDoan cd = GetValueFromForm();
            CongDoanBLL cdbll = new CongDoanBLL();
            if (cn == ChucNang.Them)
            {
                cdbll.InsertCongDoan(cd);
                LoadData(cdbll.GetAllCongDoan());
                XtraMessageBox.Show("Thêm thành công!", "Thêm", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            else
            {
                cdbll.UpdateCongDoan(cd);
                LoadData(cdbll.GetAllCongDoan());
                XtraMessageBox.Show("Sửa thành công!", "Thêm", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            this.Close();
        }

        private void btnLuuThem_Click(object sender, System.EventArgs e)
        {
            CongDoan cd = GetValueFromForm();
            CongDoanBLL cdbll = new CongDoanBLL();
            if (cn == ChucNang.Them)
            {
                cdbll.InsertCongDoan(cd);
                LoadData(cdbll.GetAllCongDoan());
                XtraMessageBox.Show("Thêm thành công!", "Thêm", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            else
            {
                cdbll.UpdateCongDoan(cd);
                LoadData(cdbll.GetAllCongDoan());
                XtraMessageBox.Show("Sửa thành công!", "Thêm", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            ClearForm();
        }

        private void btnHuyBo_Click(object sender, System.EventArgs e)
        {
            if (XtraMessageBox.Show("Bạn có muốn thoát không?", "Thoát", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
            {
                this.Close();
            }
        }

        private void glkSanPham_EditValueChanged(object sender, System.EventArgs e)
        {
            List<CongDoan> listCongDoan = new List<CongDoan>();
            int ma = 0;
            int.TryParse(glkSanPham.EditValue.ToString(), out ma);
            listCongDoan = cdbll.GetAllCongDoanByMaSP(ma);
            double cc = (double)(from c in listCongDoan select c.TriGia).Sum();
            double triGiaSP = 0;
            double.TryParse(spbll.GetSanPhamById(ma).GiaTien.ToString(), out triGiaSP);
            calTriGia.EditValue=triGiaSP-cc;
        }
    }
}